const { app, BrowserWindow, Menu, ipcMain } = require('electron')
const path = require('path')

let mainWindow
let isAlwaysOnTop = true

function createWindow() {
  // 创建浏览器窗口
  mainWindow = new BrowserWindow({
    width: 400,
    height: 300,
    webPreferences: {
      nodeIntegration: true,
      contextIsolation: false
    },
    frame: false,
    resizable: false,
    alwaysOnTop: true,
    title: '桌面时钟',
    icon: null,
    titleBarStyle: 'hidden',
    autoHideMenuBar: true
  })

  // 加载 index.html
  mainWindow.loadFile('index.html')

  // 设置菜单
  const menuTemplate = [
    {
      label: '窗口',
      submenu: [
        {
          label: '置顶显示',
          type: 'checkbox',
          checked: true,
          click: () => {
            isAlwaysOnTop = !isAlwaysOnTop
            mainWindow.setAlwaysOnTop(isAlwaysOnTop)
          }
        },
        {
          label: '退出',
          accelerator: 'CmdOrCtrl+Q',
          click: () => {
            app.quit()
          }
        }
      ]
    }
  ]

  const menu = Menu.buildFromTemplate(menuTemplate)
  Menu.setApplicationMenu(menu)

  // 鼠标进入窗口时显示菜单栏
  mainWindow.webContents.on('dom-ready', () => {
    mainWindow.webContents.executeJavaScript(`
      document.addEventListener('mouseenter', () => {
        require('electron').ipcRenderer.send('show-menu-bar');
      });
      
      document.addEventListener('mouseleave', () => {
        require('electron').ipcRenderer.send('hide-menu-bar');
      });
    `)
  })

  // 打开开发者工具（开发时使用）
  // mainWindow.webContents.openDevTools()
}

// 这段程序将会在 Electron 结束初始化
// 和创建浏览器窗口的时候调用
app.whenReady().then(() => {
  createWindow()

  app.on('activate', function () {
    if (BrowserWindow.getAllWindows().length === 0) createWindow()
  })
})

// 除了 macOS 外，当所有窗口都被关闭的时候退出程序
app.on('window-all-closed', function () {
  if (process.platform !== 'darwin') app.quit()
})

// IPC 处理置顶功能
ipcMain.on('toggle-always-on-top', () => {
  isAlwaysOnTop = !isAlwaysOnTop
  mainWindow.setAlwaysOnTop(isAlwaysOnTop)
})

// IPC 处理菜单栏显示/隐藏
ipcMain.on('show-menu-bar', () => {
  mainWindow.setMenuBarVisibility(true)
})

ipcMain.on('hide-menu-bar', () => {
  mainWindow.setMenuBarVisibility(false)
})